package com.ruoyi.bantong.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ruoyi.bantong.domain.BtUserAccountRecord;

/**
 * 用户账户变动记录Service接口
 * 
 * @author laohei
 * @date 2021-01-24
 */
public interface IBtUserAccountRecordService 
{
    /**
     * 查询用户账户变动记录
     * 
     * @param usrId 用户账户变动记录ID
     * @return 用户账户变动记录
     */
    public BtUserAccountRecord selectBtUserAccountRecordById(Integer usrId);

    /**
     * 查询用户账户变动记录列表
     * 
     * @param btUserAccountRecord 用户账户变动记录
     * @return 用户账户变动记录集合
     */
    public List<BtUserAccountRecord> selectBtUserAccountRecordList(BtUserAccountRecord btUserAccountRecord);

    /**
     * 新增用户账户变动记录
     * 
     * @param btUserAccountRecord 用户账户变动记录
     * @return 结果
     */
    public int insertBtUserAccountRecord(BtUserAccountRecord btUserAccountRecord);

    /**
     * 修改用户账户变动记录
     * 
     * @param btUserAccountRecord 用户账户变动记录
     * @return 结果
     */
    public int updateBtUserAccountRecord(BtUserAccountRecord btUserAccountRecord);

    /**
     * 批量删除用户账户变动记录
     * 
     * @param usrIds 需要删除的用户账户变动记录ID
     * @return 结果
     */
    public int deleteBtUserAccountRecordByIds(Integer[] usrIds);

    /**
     * 删除用户账户变动记录信息
     * 
     * @param usrId 用户账户变动记录ID
     * @return 结果
     */
    public int deleteBtUserAccountRecordById(Integer usrId);

    /**
     * 构建用户账户变动记录信息
     *
     * @param btUserId 用户ID
     * @param bean 本次变动金豆
     * @param score 本次变动积分
     * @param id 变动表ID
     * @param table 变动表
     * @param changeType  in或 out
     * @param actionType 变动类型 1 2 4 等
     * @return 结果
     */
    public void updataUserAccount(Integer btUserId, BigDecimal bean, BigDecimal score,
                                  Integer id, String table, String changeType,
                                  Integer actionType);

    /**
     * 后台首页统计
     * 1.售出金豆（统计的是平台给所有机构充值的金豆总合）
     * 2.全部版通（统计的是会员中签后获得的版通总积分）
     * 3.未兑换版通（统计的是现在所有会员拥有的版通积分总数）
     * 4.已兑换版通（统计的是会员获得版通积分后，来平台兑换版通后扣除的总数）（3+4的总合应该等于2）
     */
    Map<String,Object> selectMainData();

    /**
     * 后台首页统计
     * 5.统计一下每天的销售情况，用列表显示，只显示前一天的情况，统计时间为每天0点截止 列表维度为：1.充值金豆数 2.兑换版通数。
     */
    List<Map<String,Object>> selectListOrderByDay();

}
